/**
 * @file bsp_list.h
 * @brief 链表API
 * @author wangh (wanghuan3037@fiberhome.com)
 * @version 1.0
 * @date 2020-09-21
 * @copyright Copyright (c) 2020  烽火通信
 */
#ifndef __BSP_LIST_H
#define __BSP_LIST_H 

#ifdef __cplusplus
extern "C" {
#endif         

#if 0
/**
 * @brief 链表的结构
 */
typedef struct _linked_list
{
    int size;                               /* 链表大小 */
    struct _linked_list_node *head;         /* 数据节点头，不存放数据 */
    struct _linked_list_node *iteratorP;    /* 遍历器 */
} linked_list;

/**
 * @brief 链表节点
 */
typedef struct _linked_list_node
{
    struct _linked_list_node *next; /* 下一个节点指针 */
    struct _linked_list_node *pre;  /* 上一个节点的指针 */
    void *data;                     /* 包含的数据 */
} linked_list_node;

/**
 * @brief 创建链表
 * @return linked_list* 返回创建好的链表
 */
linked_list *create_linked_list();

/**
 * @brief 使用数据数组创建链表（即批量添加）
 * @param data 数据数组
 * @param data_len 数组长度
 * @return linked_list* 返回创建好的链表
 */
linked_list *create_linked_list_by_data(void **data, int data_len);

/**
 * @brief 使用已有链表创建一个新的链表
 * @param ll 已有的链表
 * @return linked_list* 返回创建好的新链表
 */
linked_list *create_linked_list_by_list(linked_list * ll);

/**
 * @brief 将数据节点添加到链表
 * @param ll 链表
 * @param data 数据节点
 * @return linked_list* 返回添加好节点的链表
 */
linked_list *append_to_linked_list(linked_list * ll, void *data);

/**
 * @brief 遍历获取链表的下一个节点
 * @param ll 需要遍历的链表
 * @return linked_list* 返回链表节点
 */
linked_list_node *linked_list_get_next(linked_list *ll);

/**
 * @brief 删除链表
 * @param ll 需要删除的链表
 */
void delete_linked_list(linked_list * ll);
#endif

#ifdef __cplusplus
}
#endif //__cplusplus 

#endif	 // __BSP_LIST_H 

/*********** (C) COPYRIGHT 2020 FiberHome *****END OF FILE****/
